package com.baizw.cultivation.common.annotation;

import com.baizw.cultivation.common.annotation.validator.ExistInTableValidator;
import org.springframework.core.annotation.AliasFor;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 查询数据是否在表中存在
 *
 * @author 剧终1204
 * @version V1.0
 * @date 2020年07月22日 16:17
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = ExistInTableValidator.class)
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
public @interface ExistInTable {

    /**
     * 表名称
     *
     * @return
     */
    @AliasFor("value")
    String tableName() default "";

    @AliasFor("tableName")
    String value() default "";

    /**
     * 唯一key
     *
     * @return
     */
    String key() default "id";

    /**
     * 提示消息
     *
     * @return
     */
    String message() default "该数据已存在，请核验！";

    /**
     * 是否必须存在
     *
     * @return 默认必须存在
     */
    boolean mustExist() default true;

    Class<?>[] groups() default {};//分组

    //这个暂时不清楚作用
    Class<? extends Payload>[] payload() default {};
}
